home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-09-14 | 22.8 KB | 696 lines | [TEXT/MPS ] |
-
- ;*******************************************************
- ;
- ; SCSI Driver 'Equates' file..
- ;
- ; Written by Matt Gulick. Started August 13,1988
- ;
- ; Copyright Apple Computer, Inc. 1988-90
- ;
- ;*******************************************************
-
- ;*******************************************************
- ;
- ; This file contains all the global equates for the
- ; SCSI Driver. Only those items below that are marked
- ; as "**** Changable ****" can be altered safely
- ; without detailed intimate knowledge of how the
- ; generic driver functions. Any other values should
- ; only be modified by someone who understands how this
- ; generic driver functions.
- ;
- ;*******************************************************
-
- ;
- ; Bit Location equates
- ;
- null equ %0000000000000000
- bit_0 equ %0000000000000001
- bit_1 equ %0000000000000010
- bit_2 equ %0000000000000100
- bit_3 equ %0000000000001000
- bit_4 equ %0000000000010000
- bit_5 equ %0000000000100000
- bit_6 equ %0000000001000000
- bit_7 equ %0000000010000000
- bit_8 equ %0000000100000000
- bit_9 equ %0000001000000000
- bit_10 equ %0000010000000000
- bit_11 equ %0000100000000000
- bit_12 equ %0001000000000000
- bit_13 equ %0010000000000000
- bit_14 equ %0100000000000000
- bit_15 equ %1000000000000000
- ;
- ; Partition Map Signature
- ;
- Part_sig equ $4d50
- ;
- ; Booleans
- ;
- true equ bit_0
- false equ null
- ;
- ; Time definitions.
- ;
- qtr_sec equ $0001
- one_sec equ 4*qtr_sec
- one_min equ 60*one_sec
- ;
- ; SCSI Driver Version Number.
- ; and other driver dependent data
- ;
- drvr_vers equ $1100 ;Driver 1.1 for GS/OS 5.0
-
- cmd_start equ $0000 ;Driver Startup Call
- cmd_open equ $0001 ;Driver Open Call
- cmd_read equ $0002 ;Driver Read Call
- cmd_write equ $0003 ;Driver Write Call
- cmd_close equ $0004 ;Driver Close Call
- cmd_status equ $0005 ;Driver Status Call
- cmd_control equ $0006 ;Driver Control Call
- cmd_flush equ $0007 ;Driver Flush Call
- cmd_shutdown equ $0008 ;Driver Shutdown Call
- max_d_cmd equ $0008 ;Max Driver Command **** Changable ****
- max_s_cmd equ $0005 ;Max Status Code **** Changable ****
- max_c_cmd equ $0009 ;Max Control Code **** Changable ****
- ;
- ; Suppervisory Dispatcher IDs and
- ; SCSI Manager Command Numbers
- ;
- super_d_id equ $0000 ;Supervisory Dispatcher's ID
- get_sdrvr_id equ $0000 ;Get S Driver's ID Number
- set_sib_ptr equ $0001 ;Set SIB Pointer
- cmd_get_dvc equ $0002 ;SCSI Manager Get Devices Call
- cmd_claim_dvc equ $0003 ;SCSI Manager Claim Devices Call
- scsi_io_call equ $0004 ;SCSI Manager I/O Call
- ;
- ; SCSI Device Types from INQUIRY Call
- ;
- direct_acc equ $0000 ; Direct-Access Device
- seq_acc equ $0001 ; Sequential-Access Device
- print_dvc equ $0002 ; Printer Device
- proc_dvc equ $0003 ; Processor Device
- worm_dvc equ $0004 ; Write-once Read-multiple Device
- read_dacc equ $0005 ; Read-only Direct-Access Device
- scanner equ $0006 ; Scanner Device
- optic_mem equ $0007 ; Optical Memory Devices
- changer equ $0008 ; Changer Devices
- comm_dvc equ $0009 ; Communication Devices
- mcd_40 equ $0010 ; Apple's tape. Direct Access Magnetic Tape Device
- apple_cd equ read_dacc ; Apple's CD-ROM
- apple_scan equ scanner ; Apple's Scanner
- appl_laser equ $00ff ; Apple's LaserWriter SC
- data_dat equ $00ff ; Data Dat Device
- mag_optical equ direct_acc ; Magneto-Optical Device
- ;
- ; Type of Device we support in this driver.
- ;
-
- ;-------------------------------------------------------------------------------
-
- IF Type = 0 Then
-
- scsi_dtype equ direct_acc
- block_dvc equ true
- character_dvc equ false
- part_suprt equ true ;Supports Partions TRUE/FALSE
- warm_ss_suprt equ true ;Supports Warm Shutdown/Startups
- block_size equ $200
- cache_blks equ true
- dibs_2_make equ 4 ;Number of dibs to make if growing
- max_dvc_cnt equ 100 ;Yes: that's decimal 100
- p_mask_adder equ bit_10 ;First Bit of Partition Count. *** Changable ***
- max_p_mask equ p_mask_adder\ ;6 bits of unit number
- +p_mask_adder*2\
- +p_mask_adder*4\
- +p_mask_adder*8\
- +p_mask_adder*16\
- +p_mask_adder*32
- max_partitions equ max_p_mask\
- /p_mask_adder+1
- interleave equ 1
- max_timeout equ 60*one_min ;**** Changable ****
- ;
- ; IMMED Bit is bit 0 of byte 1 in
- ; the standard SCSI Command for
- ; Direct-Access Devices.
- ; That means the high byte because
- ; of the 65xxx Low -> High structure.
- ; Kind of confusing!
- ;
- immed_loc equ bit_8 ; IMMED Bit Usage
-
- ENDIF
-
- ;-------------------------------------------------------------------------------
-
- IF Type = 1 Then
-
- scsi_dtype equ apple_cd
- block_dvc equ true
- character_dvc equ false
- part_suprt equ true ;Supports Partions TRUE/FALSE
- warm_ss_suprt equ true ;Supports Warm Shutdown/Startups
- block_size equ $200
- cache_blks equ true
- dibs_2_make equ 4 ;Number of dibs to make if growing
- max_dvc_cnt equ 100 ;Yes: that's decimal 100
- p_mask_adder equ bit_10 ;First Bit of Partition Count. *** Changable ***
- max_p_mask equ p_mask_adder\ ;6 bits of unit number
- +p_mask_adder*2\
- +p_mask_adder*4\
- +p_mask_adder*8\
- +p_mask_adder*16\
- +p_mask_adder*32
- max_partitions equ max_p_mask\
- /p_mask_adder+1
- interleave equ 0 ;Format not allowed
- max_timeout equ 60*one_min ;**** Changable ****
- ;
- ; IMMED Bit is bit 0 of byte 1 in
- ; the standard SCSI Command for
- ; Direct-Access Devices.
- ; That means the high byte because
- ; of the 65xxx Low -> High structure.
- ; Kind of confusing!
- ;
- immed_loc equ null ;No IMMED Bit Usage
-
- ENDIF
-
- ;-------------------------------------------------------------------------------
-
- IF block_dvc = character_dvc THEN
-
- ; "These two can not be the same!"
-
- ENDIF
-
- ;-------------------------------------------------------------------------------
-
- ;
- ; Structure Sizes.
- ;
- one_page equ $00000100
- dib_size equ one_page
- max_gdvc_buf equ $00000704
- max_cmd_len equ 12 ;Yes: that's decimal 12
-
- scsi_duid equ $3C00 ;**** Changable ****
- claim_dvc equ false ;**** Changable ****
-
- warm_cold_flag equ $e101d0 ;word: 0 = cold startup/shutdown
- ; 1 = warm startup/shutdown
-
- ;
- ; System Service Calls we need.
- ;
- ;*******************************************************
- ;
- ; ENTRY: move_info via 'jsl'
- ;
- ; LONGWORD - Source buffer pointer
- ; LONGWORD - Destination buffer pointer
- ; LONGWORD - Transfer length
- ; WORD - Source buffer pointer
- ; SP -->
- ;
- ; A Reg = Undefined
- ; X Reg = Undefined
- ; Y Reg = Undefined
- ; Bank Reg = Undefined
- ; Dir Reg = GS/OS Direct Page
- ; P Reg = N V M X D I Z C E
- ; x x 0 0 0 x x x 0
- ;
- ; EXIT: move_info via 'rtl'
- ;
- ; A Reg = Error Code
- ; X Reg = Undefined
- ; Y Reg = Undefined
- ; Bank Reg = Undefined
- ; Dir Reg = GS/OS Direct Page
- ; P Reg = N V M X D I Z C E
- ; x x 0 0 0 x x 0 0 No Error
- ; x x 0 0 0 x x 1 0 Error
- ;
- ;*******************************************************
-
- move_info equ $01fc70
-
- moveblkcmd equ $0800 ;Block Move Option
- move_sinc_dinc equ $0805 ;Source Inc, Dest Inc
-
- move_sinc_ddec equ $0809 ;Source Inc, Dest Dec
- move_sdec_dinc equ $0806 ;Source Dec, Dest Inc
- move_sdec_ddec equ $080a ;Source Dec, Dest Dec
-
- move_scon_dcon equ $0800 ;Source con, Dest con
- move_sinc_dcon equ $0801 ;Source Inc, Dest con
- move_sdec_dcon equ $0802 ;Source Dec, Dest con
- move_scon_dinc equ $0804 ;Source con, Dest Inc
- move_scon_ddec equ $0808 ;Source con, Dest Dec
-
- ;*******************************************************
- ;
- ; ENTRY: set_disksw via 'jsl'
- ;
- ; A Reg = Undefined
- ; X Reg = Undefined
- ; Y Reg = Undefined
- ; Bank Reg = Undefined
- ; Dir Reg = GS/OS Direct Page
- ; P Reg = N V M X D I Z C E
- ; x x 0 0 0 x x x 0
- ;
- ; EXIT: set_disksw via 'rtl'
- ;
- ; A Reg = Undefined
- ; X Reg = Undefined
- ; Y Reg = Undefined
- ; Bank Reg = Undefined
- ; Dir Reg = GS/OS Direct Page
- ; P Reg = N V M X D I Z C E
- ; x x 0 0 0 x x 0 0 No Error
- ;
- ;*******************************************************
-
- cache_find_blk equ $01fc04
-
- cache_add_blk equ $01fc08
-
- cache_kil_blk equ $01fc14
-
- cache_del_vol equ $01fc18
-
- set_disksw equ $01fc90
-
- s_dispatch equ $01fca4
-
- install_driver equ $01fca8
- ;
- ; Direct Page Addresses.
- ;
- dev_num equ $0000 ;Device Number
- call_num equ $0002 ;Call Number
- buff_ptr equ $0004 ;Buffer Pointer
- rqst_cnt equ $0008 ;Request Count
- trans_cnt equ $000C ;Transfer Count
- block_num equ $0010 ;Block Number (Read/Write only)
- blk_size equ $0014 ;Block Size
- fst_num equ $0016 ;FST Number (Read/Write only)
- stat_code equ $0016 ;Status Command Code
- cont_code equ $0016 ;Control Command Code
- volume_id equ $0018 ;Volume ID (Read/Write only)
- cache_prio equ $001A ;Cache Priority Value (Read/Write only)
- cache_ptr equ $001C ;Cache Pointer (Read/Write only)
- dib_ptr equ $0020 ;DIB Pointer
- start_our_zp equ $0030
- scsi_mdrvr equ start_our_zp;Main Driver Command Data Ptr goes here.
- dvc_list equ scsi_mdrvr+4;Get Devices List (Startup Command Only)
- scsi_zp0 equ dvc_list+4 ;User Defined Direct page scratch pad
- scsi_zp1 equ scsi_zp0+2 ;User Defined Direct page scratch pad
- scsi_zp2 equ scsi_zp1+2 ;User Defined Direct page scratch pad
- scsi_zp3 equ scsi_zp2+2 ;User Defined Direct page scratch pad
- scsi_zp4 equ scsi_zp3+2 ;User Defined Direct page scratch pad
- scsi_zp5 equ scsi_zp4+2 ;User Defined Direct page scratch pad
- scsi_zp6 equ scsi_zp5+2 ;User Defined Direct page scratch pad
- scsi_zp7 equ scsi_zp6+2 ;User Defined Direct page scratch pad
- first_dib equ scsi_zp7+2 ;Start of DIB RAM (Startup Command Only)
- next_dib equ first_dib+4 ;Next DIB to be used (Startup Command Only)
- last_dib equ next_dib+4 ;Pointer to Default DIB Structure
- prev_dib equ last_dib+4 ;Pointer to previous DIB in linked list
- add_dib_here equ prev_dib+4 ;Pointer for DIB walking code
- rebuild_zp equ add_dib_here+4 ;Reserved for the use of rebuild dib code
- end_our_zp equ rebuild_zp+4
-
- sib_pointer equ $0074
- smgr_pl_ptr equ $0078
- ;
- ; Memory attribute equates
- ;
- attrlock equ bit_15 ;Block is locked down.
- attrfixed equ bit_14 ;Block can't move in mem
- attrpurg1 equ bit_8 ;Purge level 1
- attrpurg2 equ bit_9 ;Purge level 2
- attrpurg3 equ bit_8+bit_9 ;Purge level 3
- attrnocross equ bit_4 ;May not cross banks
- attrnospec equ bit_3 ;don't use special mem
- attrpage equ bit_2 ;Page alligned
- attraddr equ bit_1 ;Remain at fixed address
- attrbank equ bit_0 ;Remain in fixed bank
- ;
- ; SCSI Command Translation Table Flags
- ;
- scsit_tx equ bit_15 ;SCSI Send Data Command
- scsit_rx equ bit_14 ;SCSI Receive Data Command
- scsit_stat equ bit_13 ;SCSI Status Command
- scsit_cont equ bit_12 ;SCSI Control Command
- scsit_data equ bit_11 ;SCSI Data I/O Command
- scsit_dvc equ bit_10 ;SCSI Device I/O Command
- scsit_blk equ bit_9 ;Command has a Block Number
- scsic_1st equ bit_8 ;Must be first device if linked
- scsic_int equ bit_7 ;Internal Driver Command only
- scsic_dsw equ bit_6 ;Issue DISK_SW with this call
- scsic_off equ bit_5 ;Device is going offline.
- scsic_tout equ bit_4 ;Adjust time out by block count
- scsid_asis equ bit_3 ;CMD Data is in SCSI format
- scsid_blk equ bit_1 ;Convert Trans Count to Blocks
- scsid_byte equ bit_0 ;Leave Trans Count in Bytes
- scsid_none equ null ;Transfer count does not go in CMD
- scsi_endcmd equ null ;End of SCSI Translation Table
- ;
- ; Device Characteristics.
- ;
- ram_rom_disk equ bit_15 ;RAM or ROM Disk if Set
- gened_drvr equ bit_14 ;Generated Driver if Set
- linked_dvc equ bit_13 ;Linked Device if Set
- call_active equ bit_12 ;Device Busy if Set
- restartable equ bit_11 ;Restartable from ram if Set
- mhz_1 equ null ;1 Mhz Device
- mhz_2_6 equ bit_8 ;2.6 Mhz Device
- mhz_gt_2_6 equ bit_9 ;>2.6 Mhz Device
- speed_ind equ bit_8+bit_9 ;Device is speed independent
- blk_device equ bit_7 ;Block Device if Set
- write_allow equ bit_6 ;Write is Allowed if Set
- read_allow equ bit_5 ;Read is Allowed if Set
- format_allow equ bit_3 ;Format is Allowed if Set
- removable equ bit_2 ;Removable Media if Set
- ;
- ; Device Flags for 'dvcflag'. All
- ; are considered true if set.
- ;
- int_busy equ bit_15 ;Internal busy flag for async
- wait_mode equ bit_14 ;Driver Wait/No Wait state
- dvc_online equ bit_13 ;Device Online Flag
- dvc_switch equ bit_12 ;Device Switched Flag
- dvc_hardofl equ bit_11 ;Device Hard Offline Flag
- dvc_hard_sw equ bit_10 ;Device Hard Switch Flag
- relaxing equ bit_9 ;Device is relaxing (Warm Shutdown)
- cold_dib equ bit_8 ;Do cold startup regardless of warmstart
- play_mode equ bit_7 ;In Audio Play Mode if set
- pdos_part equ bit_6 ;ProDOS Partition if set.
- ; Bits 0 - 5 are reserved at this time.
- ;
- ; Error_Codes.
- ;
- no_error equ $0000
- bad_dev_number equ $0011
- drvr_bad_req equ $0020
- drvr_bad_code equ $0021
- drvr_bad_parm equ $0022
- drvr_not_open equ $0023
- drvr_prior_open equ $0024
- drvr_io equ $0027
- drvr_no_dev equ $0028
- drvr_busy equ $0029
- drvr_wrt_prot equ $002b
- drvr_bad_cnt equ $002c
- drvr_bad_blk equ $002d
- drvr_dsk_swch equ $002e
- drvr_off_line equ $002f
-
-
- ;*******************************************************
- ;
- ; The following statements are used to define the DIB
- ; structure. The structure contains the traditional
- ; DIB followed by an extension used for device
- ; maintainence. All together each DIB with the
- ; associated extensions will take one page of RAM.
- ;
- ;*******************************************************
- ;
- ; $00 ------------------------------------------------
- ; | |
- ; | Device Information Block Data (DIB) |
- ; $3F | |
- ; ------------------------------------------------
- ; $40 | Physical Block Number |
- ; | |
- ; $43 | that maps to logical block zero |
- ; ------------------------------------------------
- ; $44 | |
- ; | Head Pointer |
- ; $47 | |
- ; ------------------------------------------------
- ; $48 | |
- ; | Forward Pointer |
- ; $4B | |
- ; ------------------------------------------------
- ; $4C | Memory DIB Count |
- ; ------------------------------------------------
- ; $4E | Partition Map Block Number |
- ; ------------------------------------------------
- ; $50 | |
- ; | Memory Manager Handle for this DIB |
- ; $53 | |
- ; ------------------------------------------------
- ; $54 | |
- ; | Block Size (Bytes) |
- ; $57 | |
- ; ------------------------------------------------
- ; $58 | Max SCSI Command for this Device |
- ; ------------------------------------------------
- ; $5A | |
- ; | Command Bitmap (See ERS for description) |
- ; $79 | |
- ; ------------------------------------------------
- ; $7A | SCSI Command Data |
- ; | and |
- ; $D9 | SCSI Manager Call Buffer Structures |
- ; ------------------------------------------------
- ; $DA | 'Busy' and other Flags |
- ; ------------------------------------------------
- ; $DC | |
- ; | Completion Vector with Code |
- ; $FF | |
- ; ------------------------------------------------
- ;
- ;*******************************************************
-
- dib RECORD $0000
- ;
- ; Definition of DIB Structure.
- ;
- linkptr ds.l 1 ; DIB Link Pointer (LONG)
- entry ds.l 1 ; Pointer to Drvrs Main Entry (LONG)
- dvcchar ds.w 1 ; Device Characteristics (WORD)
- blkcnt ds.l 1 ; Block Count for this device (LONG)
- namelen ds.b 1 ; Length of Descriptive Name (PSTR)
- disname ds.b 31 ; Field for this devices Name (STR)
- slotnum ds.w 1 ; Device Slot Number from MGR. (WORD)
- unitnum ds.w 1 ; Device Unit Number from MGR. (WORD)
- versnum ds.w 1 ; Version Number for our Driver (WORD)
- dvcid ds.w 1 ; ID of Device we talk to (WORD)
- headlnk ds.w 1 ; Head Device Link (WORD)
- fdvclnk ds.w 1 ; Forward Device Link (WORD)
- ext_ptr ds.l 1 ; Pointer to DIB Extension (LONG)
- devnum ds.w 1 ; DIB Device Number (WORD)
- ;
- ; The Starting Block Number for this device
- ; is maintained here. This is used to
- ; modify the requested block number from
- ; a logical to a physical number.
- ;
- start_blk ds.l 1 ; Starting Physical Block Num. (LONG)
- ;
- ; These two pointers are the compliment
- ; to the links in the standard DIB and
- ; will point to the actual DIB referenced
- ; in the Head and Forward Device Links.
- ;
- headptr ds.l 1 ; Head Dvc Pointer (LONG)
- fdvcptr ds.l 1 ; Forward Dvc Pointer (LONG)
- mem_dib_cnt ds.w 1 ; Number of active dibs in mem (WORD)
- part_blk ds.w 1 ; Block containing partition (WORD)
- ;
- ; Memory Manager Handle
- ;
- handle ds.l 1 ; (LONG)
- ;
- ; Block Size
- ;
- blksize ds.l 1 ; (LONG)
- ;
- ; Maximum SCSI Command supported by
- ; the device for this DIB.
- ;
- maxcmd ds.w 1 ; (WORD)
- ;
- ; SCSI Command Group Bitmaps
- ;
- group0 ds.l 1 ; Group 0 (LONG)
- group1 ds.l 1 ; Group 1 (LONG)
- group2 ds.l 1 ; Group 2 (LONG)
- group3 ds.l 1 ; Group 3 (LONG)
- group4 ds.l 1 ; Group 4 (LONG)
- group5 ds.l 1 ; Group 5 (LONG)
- group6 ds.l 1 ; Group 6 (LONG)
- group7 ds.l 1 ; Group 7 (LONG)
- ;
- ; SCSI Manager Call PList
- ;
- scsi_slot ds.w 1 ; Same as our Slot Number (WORD)
- scsiid ds.w 1 ; Same as our Unit Number (WORD)
- version ds.w 1 ; Version of call issued (WORD)
- scsic_flgs ds.w 1 ; Flags from Command Table (WORD)
- time_out ds.w 1 ; Time Out Factor * xxx ms (WORD)
- compvec ds.l 1 ; Completion Routine Pointer (LONG)
- cp_ptr ds.l 1 ; Pointer to Command Packet (LONG)
- trx_ptr ds.l 1 ; Ptr to Send/R'cv Structure (LONG)
- trx_len
- trx_rqst ds.l 1 ; Users Send/R'cv Length (LONG)
- rslt_ptr ds.l 1 ; Pointer to Status Structure (LONG)
-
- ds.l 1 ; Reserved space 0 (LONG)
- ds.l 1 ; Reserved space 1 (LONG)
- ;
- ; SCSI Command Packet
- ;
- scsicmd ds.b 12 ; Room for any SCSI Command (BYTES)
- ;
- ; SCSI Manager Device Send/R'cv Buffers List
- ;
- trx_buff ds.l 1 ; Users Send Buffer (LONG)
- trx_length ds.l 1 ; Request cnt for this buffer (LONG)
- trx_offset ds.l 1 ; Offset for next pass (LONG)
- trx_null ds.l 1 ; Null (LONG)
- trx_stop ds.l 1 ; Null (LONG)
- ds.l 1 ; Null (LONG)
- ds.l 1 ; Null (LONG)
- ds.l 1 ; Null (LONG)
- trx_rsrv ds.l 4 ; Reserved Space * 4 for future (LONG)
- ;
- ; Device Busy and other Flags and results
- ;
- dvcflag ds.w 1 ; Device Busy and other Flags (WORD)
- ;
- ; Completion Routine for this DIB.
- ; This takes the remaining space in
- ; the allocated RAM. Any routine can
- ; be placed here but must never go
- ; beyond offset $FF
- ;
- end equ *
- complet ds.b $100-end
-
- ENDR
-
- pm RECORD $0000
- ;
- ; All Values given below are
- ; in Macintosh High >> Low
- ; format.
- ;
- Sig ds.w 1 ;Signature Always $504d
- ; Apple II = $4d50
- SigPad ds.w 1 ;Reserved for future use
- MapBlkCnt ds.l 1 ;Number of blocks in Map
- PyPartStart ds.l 1 ;First Physical Block of Partition
- PartBlkCnt ds.l 1 ;Number of Blocks in Partition
- PartName ds.b 32 ;Partition Name
- PartType ds.b 32 ;Partition Type
- LgDataStart ds.l 1 ;1st Logical Data Block
- DataCnt ds.l 1 ;Number of data blocks
- PartStatus ds.l 1 ;Partition Status Info
- LgBootStart ds.l 1 ;1st Logical Boot Block
- BootSize ds.l 1 ;Size of Boot Code in Bytes
- BootLoad ds.l 1 ;Boot Code Load Address
- BootLoad2 ds.l 1 ;Additional Boot Load Info
- BootEntry ds.l 1 ;Boot Code Entry Point
- BootEntry2 ds.l 1 ;Additional Boot Entry Info
- BootCksum ds.l 1 ;Boot Code Checksum
- Processor ds.b 16 ;Processor Type
- Args ds.b 128 ;Boot Specific Arguments
- end equ *
- ds.b $200-end ;Pad to 1 Block
- ENDR
- ;
- ; Structure of data from Read Capacity Call
- ;
- block RECORD $0000
-
- count ds.l 1 ;Block Count High >> Low
- size ds.l 1 ;Block Size High >> Low
-
- ENDR
- ;
- ; Structure of data from Mode Sense Call
- ;
- mode RECORD $0000
-
- sense_len ds.b 1 ;Sense Data Length
- med_type ds.b 1 ;Medium Type
- w_protect ds.b 1 ;Write Protect bit 7
- blk_disc ds.b 1 ;Block Descriptor Length
- ds.b 1 ;Unused data
- blocks ds.b 3 ;Block Count High >> Low
- ds.b 1 ;Unused data
- blk_size ds.b 3 ;Block Size High >> Low
- page_number ds.b 1 ;Page number of mode sense data
- length ds.b 1 ;Length of data that follows
-
- ENDR
- ;
- ; Structure of data from Request Sense Call
- ;
- rqst_sens RECORD $0000
-
- error_code ds.b 1 ;Bit 7 = Valid Flag
- ;Bits 0-6 = Error Code
- segment ds.b 1 ; = Segment Number
- sense_key ds.b 1 ;Bit 7 = Filemark bit
- ;Bit 6 = EOM bit
- ;Bit 5 = ILI bit
- ;Bit 4 = Reserved
- ;Bits 0-3 = Sense Key
- info_bytes ds.b 4 ; = Information Bytes
- addnl_sens_len ds.b 1 ; = Additional Sense Length (n-7)
- command_spec ds.b 4 ; = Command Specific Information
- addnl_sens_code ds.b 1 ; = Additional Sense Code
- addnl_code_qual ds.b 1 ; = Additional Sense Code Qualifier
-
- ENDR
- ;
- ; Structure of data from Inquiry Call
- ;
- inq RECORD $0000
-
- pd_type ds.b 1 ;Peripheral Device Type
- removable ds.b 1 ;Removable bit 7
- ds.b $26-2 ;Unused data
- group ds.b 1 ;First Group Number
-
- ENDR
- ;
- ; Structure of data from GET DATA STATUS Call
- ;
- gds RECORD $0000
-
- ds.b 2 ;reserved
- data_len ds.b 1 ;Amount of data returned by this call
- block ds.b 1 ;bit 0
- winw_id ds.b 1 ;Window Identifier
- ds.b 1 ;reserved
- buf_avail ds.b 3 ;Amount of available Scanner Buffer Space
- data_avail ds.b 3 ;Amount of Available Scan Data
-
- ENDR
- ;
- ; Structure of data from Device Specific Calls
- ;
- ds RECORD $0000
-
- version ds.w 1 ;Version Number of this structure
- ds.b 12 ;Command Bytes
- DCcode ds.l 1 ;1st DC Code
- DCcount ds.l 1 ;1st Count
- DCoffset ds.l 1 ;1st Offset
- DCreserved ds.l 1 ;1st Reserved
-
- ENDR
-
- EJECT
-